// 存在重复数的数组，可抽象为链表环
// [1,3,4,2,2]
// nums[0]指向nums[1], 1->3
// nums[1]指向nums[3]，3->2
// nums[2]指向nums[4], 4->2
// nums[3]指向nums[2], 2->4
// 同理，可抽象出一个有环的链表：1->3->2->4->2
// 找重复数 ---> 找有环链表的入口
int findDuplicate(int* nums, int numsSize){
    int slow = 0, fast = 0;
    while (1) {
        slow = nums[slow];
        fast = nums[nums[fast]];
        if (slow == fast)  
            break;
    }
    int met = slow;  //相遇点
    int head = 0;
    while (met != head) {   
        met  = nums[met];
        head = nums[head];
    }
    return head;
}